// 存储用户信息: token, 个人信息
import {setToken,getToken,removeToken} from '@/utils/auth'
// 导入登录接口
import {loginAction, loginApi}from '@/api/user'
export default {

  // 模块化加锁
  namespaced: true,

  // 1.定义变量
  state: {
    // 先从本地cookie获取token,作为变量默认值
    token:getToken () || ''
  },

  // 2.修改变量(同步)
  mutations: {
    /**
     * 存储token
     * @param {*} state 所有变量
     * @param {*} token 调用setToken方法的参数调用
     */
    setToken(state, token) {
      // 内存一分
      state.token = token
      // 2. 防止刷新没了, 在硬盘储存一份
      setToken(token)
    },
    // 删除token
    delToken(state) {
      state.token = ''
      removeToken()
    }

  },

  // 3.调用后台接口发请求(异步)
  actions: {
    /**
     * 调用登录接口并储存token
     * @param {*} ctx 上下文
     * @param {*} loginForm 调用loginAction传入参数
     */
    async loginAction(ctx, loginForm) {
      // 1.发请求获取token
      const token = await loginApi(loginForm)
      console.log('登录成功token', token)
      // 2.储存token?
      // ctx.commit === 等价于 this.$store.commit
ctx.commit('setToken', token)
   }
  }
}
